package com.stylefeng.guns.modular.apple.utils;

import java.util.Random;

/**
 * 1、根据唯一id生成自定义的字符
 * 2、在字符后面增加 O
 * 3、在后面添加若干随机数补全为所需要的位数
 */
public class CodeUtil {
    private static final char[] space = {
            '2', '3', '4', '5', '6', '7', '8', '9',
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
            'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T',
            'U', 'V', 'W', 'X', 'Y', 'Z'
    };

    private static final char b = 'O';

    private static final int binLen = space.length;

    private static final int codeLen = 6;//code长度

    /**
     * 根据ID生成一个所需的随机数
     * @param id
     * @return
     */
    public static String toSerialCode(long id) {
        char[] buf=new char[32];
        int charPos=32;

        while((id / binLen) > 0) {
            int ind=(int)(id % binLen);
            buf[--charPos]=space[ind];
            id /= binLen;
        }
        buf[--charPos]=space[(int)(id % binLen)];
        String str=new String(buf, charPos, (32 - charPos));
        // 不够长度的自动随机补全
        if(str.length() < codeLen) {
            StringBuilder sb=new StringBuilder();
            sb.append(b);
            Random rnd=new Random();
            for(int i=1; i < codeLen - str.length(); i++) {
                sb.append(space[rnd.nextInt(binLen)]);
            }
            str+=sb.toString();
        }
        return str;
    }
}
